//函数一节代码示例
// #include <stdio.h>
// #include <string.h>

// int main()
// {
//     char str1[] = "sample string";
//     char str2[40] = {'\0'};
//     char str3[] = "copy success";
//     strcpy(str2, str1);
//     printf("str1: %s\nstr2: %s\nstr3: %s", str1, str2, str3);

//     return 0;
// }
// #include <stdio.h>
// #include <memory.h>

// int main()
// {
//     int arr[] = {25, 56, 700, 900};
//     char str[] = "laughter brings people together";
//     memset(arr, 1000, 4);//memset适合对字符串使用
//     printf("%d", arr[0]);

//     return 0;
// }

//自定义函数
//返回最大值
#include <stdio.h>

int get_max(int x, int y)
{
    return (x > y)?x:y;
}
int main()
{
    int x, y;
    scanf("%d%d", &x, &y);
    printf("max = %d\n", get_max(x, y));

    return 0;
}

//交换两数
// #include <stdio.h>

// void swap1(int x, int y)
// {
//     int t = x;
//     x = y;
//     y = t;
// }
// void swap2(int* p, int* q)
// {
//     int t = *q;
//     *q = *p;
//     *p = t;
// }
// int main()
// {
//     int m = 25, n = 34;
//     swap1(m, n);
//     printf("swap::m = %d n = %d\n", m, n);
//     swap2(&m, &n);
//     printf("swap::m = %d n = %d\n", m, n);

//     return 0;
// }

//素数判断函数
// #include <stdio.h>
// int isPrime(int x)
// {
//     int flag = 1;
//     for (int i = 2; i * i <= x; i++)
//     {
//         if (x % i == 0)
//             flag = 0;
//     }

//     return flag;
// }
// int main()
// {
//     printf("%d", isPrime(2));

//     return 0;
// }

//闰年判断函数
// #include <stdio.h>

// int isLeap(int x)
// {
//     return (x % 400 == 0 || x % 4 == 0 && x % 100 != 0);
// }
// int main()
// {
//     printf("%d", isLeap(2012));

//     return 0;
// }

//整型有序数组二分查找函数
// #include <stdio.h>
// int seek(int* arr, size_t arrSize, int x)//有bug,找不到11
// {
//     int left = 0, right = arrSize - 1;
//     int mid;
//     do
//     {
//         mid = (left + right) / 2;
//         if (arr[mid] == x)
//             return 1;
//         else if (arr[mid] < x)
//             left = mid;
//         else
//             right = mid;
//     } while (mid != (left + right) / 2);
//     if (arr[right] == x)
//         return 1;
    
//     return 0;
// }
// int main()
// {
//     int arr[] = {2, 5, 6, 7, 9, 11};
//     printf("%d", seek(arr, sizeof(arr)/sizeof(int), 11));

//     return 0;
// }

// #include <stdio.h>

// void numadd(int* x)
// {
//     (*x)++;
// }
// int main()
// {
//     int num = 0;
//     numadd(&num);
//     printf("%d\n", num);
//     numadd(&num);
//     printf("%d\n", num);
//     numadd(&num);
//     printf("%d\n", num);
//     numadd(&num);
//     printf("%d\n", num);

//     return 0;
// }

//函数链式访问

// #include <stdio.h>
// #include <string.h>
// int main()
// {
//     char arr[20] = "hello";
//     int ret = strlen(strcat(arr,"bit"));//这里介绍一下strlen函数
//     printf("%d\n", ret);
//     return 0;
// }

//  #include <stdio.h>
//  int main()
//  {
//     printf("%d", printf("%d", printf("%d", 43)));//4321
//     //结果是啥？
//     return 0;
//  }

//函数递归

//NO.1 顺序打印 1234 1 2 3 4
// #include <stdio.h>

// void print(int x)
// {
//     if (x / 10)
//         print(x / 10);
//     printf("%d ", x % 10);
// }
// int main()
// {
//     print(15);
//     return 0;
// }

//NO.2 求字符串长度
// #include <stdio.h>
// #include <string.h>

// int Strlen(const char* str)
// {
//     if (*str == '\0')
//         return 0;
//     else return 1 + Strlen(str + 1);
// }
// int main()
// {
//     char str[] = "Do you have a date for the party yet?";
//     printf("strlen: %d Strlen: %d\n", strlen(str), Strlen(str));

//     return 0;
// }

//递归与迭代

//NO.1 阶乘
//递归
// #include <stdio.h>

// int fact(int x)
// {
//     if (x == 0)
//         return 1;
//     else
//         return x * fact(x - 1);
// }
// //迭代
// int fact1(int x)
// {
//     if (x == 0)
//         return 1;
//     else
//     {
//         int mul = 1;
//         for (int i = 1; i <= x; i++)
//         {
//             mul *= i;
//         }
//         return mul;
//     }
// }

// int main()
// {
//     int x = 5;
//     printf("fact(5) = %d\n", fact(5));
//     printf("fact1(5) = %d\n", fact1(5));
//     printf("fact(1) = %d\n", fact(1));
//     printf("fact1(1) = %d\n", fact1(1));
//     printf("fact(0) = %d\n", fact(0));
//     printf("fact1(0) = %d\n", fact1(0));

//     return 0;
// }

// //NO.2 斐波那契数列
// #include <stdio.h>

// //递归
// int Fib(int x)
// {
//     if (x <= 2)
//         return 1;
//     else
//         return Fib(x - 1) + Fib(x - 2);
// }
// //迭代
// int Fib1(int x)
// {
//     if (x <= 2)
//         return 1;
//     else
//     {
//         int rrnum = 1, rnum = 1, num = 0;
//         for (int i = 0; i < x - 2; i++)
//         {
//             num = rnum + rrnum;
//             rrnum = rnum;
//             rnum = num;
//         }

//         return num;
//     }
// }
// int main()
// {
//     printf("Fib(5) = %d\n", Fib(5));
//     printf("Fib1(5) = %d\n", Fib1(5));
//     printf("Fib(4) = %d\n", Fib(4));
//     printf("Fib1(4) = %d\n", Fib1(4));
//     printf("Fib(2) = %d\n", Fib(2));
//     printf("Fib1(2) = %d\n", Fib1(2));

//     return 0;
// }